package com.huahua.api.util;

import com.huahua.api.enums.LocalDirEnum;
import org.dromara.hutool.core.io.file.FileUtil;
import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.extra.spring.SpringUtil;

import java.io.File;

/**
 * @author LoveHuaHua
 * @date 2025年02月27日 13:23
 * @description believe in yourself
 */
public class OwnFileUtil {

    /**
     * 获取下载根路径
     *
     * @param dirEnum 直接计数
     * @return {@link String }
     */
    public static String getDownloadBasePath(LocalDirEnum dirEnum) {
        String property = SpringUtil.getProperty("download.basePath");
        return property + File.separator + dirEnum.getDir();
    }

    /**
     * 获取下载路径
     *
     * @param fileName 文件名
     * @return {@link String }
     */
    public static String getDownloadPath(LocalDirEnum dirEnum,String fileName){
        String property = SpringUtil.getProperty("download.basePath");
        return property + File.separator + dirEnum.getDir() + File.separator + fileName;
    }

    /**
     * 获取下载路径
     *
     * @param fileName 文件名
     * @return {@link String }
     */
    public static File getDownloadPathFile(LocalDirEnum dirEnum,String fileName){
       return FileUtil.file(getDownloadPath(dirEnum,fileName));
    }

    /**
     * 获取下载地址
     *
     * @param fileName 文件名
     * @return {@link String }
     */
    public static String getDownloadUrl(LocalDirEnum dirEnum,String fileName){
        String baseUrl = SpringUtil.getProperty("download.baseUrl");
        return StrUtil.format("{}?dir={}&fileName={}", baseUrl, dirEnum.getDir(), fileName);
    }


    /**
     * 根据完整url 获取最后一级
     *
     * @param url URL
     * @return {@link String }
     */
    public static String getLastPath(String url) {
        return StrUtil.subSuf(url, url.lastIndexOf('/') + 1);
    }

    /**
     * 获取本地路径
     *
     * @param dirEnum 直接计数
     * @param dirPath 直接路径
     * @return {@link String }
     */
    public static String getLocalPath(LocalDirEnum dirEnum, String dirPath) {
        return FileUtil.getTmpDir().getAbsolutePath() + File.separator + dirEnum.getDir() + File.separator + dirPath;
    }
}
